The present application relates generally to computer applications and, more particularly, to methods and systems for automatically modifying an application user interface (UI) based on UI capabilities of a computer device running the application.
Various types of input devices are available to users for performing operations on computer devices including, e.g., keyboards, mice, touchpads, and touchscreens. A touchscreen is an electronic visual display that the user can control through touch gestures by touching the screen with one or more fingers or by using a stylus. The user can, e.g., use the touchscreen to react to what is displayed and to control how it is displayed (e.g., by zooming the text size or scrolling up and down or across a page).
Web-based applications or web applications are software programs that run within a web browser executing on a computer device. The applications are coded in a browser-supported programming language (such as, e.g., JavaScript combined with a browser-rendered markup language like HTML) and reliant on the web browser to render the application executable. The user interacts with the application through the web pages generated by the browser. Web applications are received on the user device from a computer server over the Internet or other computer network.
Developers can use various types of software frameworks or platforms to build web applications. By way of example, software frameworks from Sencha Inc. such as the Sencha Touch™ framework allow developers to build web applications for touch-enabled user devices. The Sencha Ext JS™ framework allows developers to build web applications for devices that are not touch-enabled (also referred to herein as “desktop” devices).
Applications built using frameworks for desktop browsers can appear unfriendly and unintuitive to users of touch-enabled devices. A common solution for many developers is to build separate web applications for touch-enabled devices and for desktop devices. Building two separate applications can, however, significantly increase costs and resources required for software development, testing, and maintenance.